package com.xj.dao;

import com.xj.model.Book;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * Created by xiongjie on 2020/3/1.
 *
 * 注解只能进行简单的sql接口实现，
 * 复杂的多sql操作，需要使用function
 */
@Mapper
public interface BookDAO {

    //表名字
    String table_name = " book ";
    //插入字段
    String insert_field = " name, author, price ";
    //选择字段
    String select_field = " id, status, " + insert_field;

    /**
     * 查询所有图书
     * ibatis注解可以使用逗号，作为字符串连接
     * @return
     */
    @Select({"select", select_field, "from", table_name})
    List<Book> selectAll();

    /**
     * 插入图书。id和status有默认值
     * 使用#{}读取传入对象的属性作为参数
     * @param book
     * @return
     */
    @Insert({"insert into", table_name, "(", insert_field, ") values (#{name},#{author},#{price})"})
    int addBook(Book book);

    /**
     * 更新图书的状态，传入的参数添加@Param注解可以用在mybatis的注解里。
     * 默认不使用注解的话，映射关系是字符串名字一致
     * @param id
     * @param status
     */
    @Update({"update ", table_name, " set status=#{status} where id=#{id}"})
    void updateBookStatus(@Param("id") int id, @Param("status") int status);

}
